查看原文
其他

我在微软做研发 | 从Visual Studio背后的人和事,看微软的转型

2017-05-17 Paul Thurrott 微软丹棱街5号


本文作者:微软产品评论员 Paul Thurrott 


丹棱君有话说:自 1997 年 Visual Studio 第一版发布以来,这款易学易用、功能齐全的开发工具已经伴随开发者们走过了 20 年。20 年来,Visual Studio 的月活跃用户数增长了 25%,Visual Studio Code 的月活跃用户数也达到了 130 万,Visual Studio Mac 版本的活跃用户数更是增长了两倍。今年 3 月 8 日,微软宣布 Visual Studio 2017 全面上市,这也是迄今为止最强大、效率最高的 Visual Studio 版本。


在这一组组激动人心的数据背后,让我们从另一个角度观察 Visual Studio 的发展历程——微软开发工具和技术的历史,可以看作是微软公司的成长史;其开发者堆栈的转型,也清晰地展现了微软正在经历的转型。


历史回顾:在 Visual Studio 到来前

 

众所周知,微软的第一款产品是为首台微型计算机 Altair 8800 开发的 BASIC 程序。当然微软的雄心从未止步于 Altair。上世纪 80 年代中期,几乎每台售出的个人电脑上都安装了微软的 BASIC 语言。


当时,微软正向一家平台公司转变,产品线从操作系统版本 MS-DOS、之后的 Windows 到生产力工具 Excel。但公司从未远离其开发者的根源,或许从一开始微软就知道,自己的成功离不开健康的软件生态系统。


于是,微软把 BASIC 带到了 IBM 的 PC 机上,并陆续打造了 GW-BASIC、QuickBASIC、QBASIC 等各种变体。它为开发者们提供了一个最初叫做 Microsoft C 的 C 语言集成开发环境,一个先后用于 MS-DOS 和 Windows 的 Microsoft Macro Assembler(微软宏汇编器)。


上世纪 90 年代中期,Windows 已席卷了整个行业。同时,微软还加大了对开发者群体的投入,推出了 Visual Basic 和 Visual C++ 两款核心产品。前者首次将创建用户界面可视化,后者集成了 C 语言和 C++ 语言的开发环境,并提供了面向对象的 Microsoft 基础类库。


Visual Studio 最初那几年

微软全球副总裁潘正磊(Julia Liuson)


现任 Visual Studio 和 .NET 平台开发团队的领导人,也就是微软全球副总裁潘正磊(Julia Liuson),就是当时加入的微软。1992 年大学毕业后,她直接进入微软,成为数据库应用 Access 的一名开发人员。90 年代中期,微软开始了一项宏大计划——合并其各种开发工具,潘正磊正逢其时。


合并的成果当然就是 Visual Studio,代号“Boston”,微软希望把它打造成开发者们专属的 Office。在第一版中,Visual Studio 打包了所有现代开发工具,让开发者能以适中价格用上他们并不熟悉的产品,并在之后的版本中真正集成所有工具。


因为 Windows 95 的巨大成功,1997 年发布的第一版开发工具很自然地被命名为 Visual Studio 97。这个版本包含了 Visual Basic、Visual C++ 和 Visual FoxPro(面向开发人员的数据库解决方案)等常用工具的升级版,还包括了用于 Web 开发的 Visual InterDev 和微软的 Java 集成开发环境 Visual J++ 等新工具。


1996 年初 Visual InterDev 团队成立的第一天,潘正磊就是其中一员。“这是个很有意思的产品,值得为之奋斗好几年。当时,我们称之为‘Visual Basic for the web’。”


微软仅用了一年多时间就很快发布了 Visual InterDev 和整个 Visual Studio 97 套件。把这些工具整合在一起是一场重大的业务变革,新工具一下子被推到了更多开发者面前。与此同时,它也推动微软的开发者堆栈进入万维网、数据库、服务器应用等新市场。


Visual Studio 97 中的各种开发工具只是相互补充,发布第二版时,微软以其版本号命名并开始整合所有工具,Visual Studio 6.0 也是今天为人熟知的 Visual Studio 的起源。


之所以用 6.0 也是因为这是当时 Visual Basic 的版本号,而 Visual Basic 和 Visual J++ 则由此有了从 1.0 到 6.0 的大飞跃。微软也暂时放弃了以年份作为版本号。


从经典的 Visual Basic 到 .NET


Visual Studio 6.0 之后,由于一些法律原因,微软放弃了 Visual J++,并开发出了替代 Java 的新语言 C#(读为“C sharp”),从而开启了 .NET 时代。这一变化也与微软推动将所有支持的核心语言向单一集成开发环境(IDE)的转变不谋而合。这显然是个明智之举,但也导致了现在被称为 Visual Basic “经典”版本的终结。今天的 Visual Basic 更像是 C#,而不是过去的 Visual Basic。


微软打造 Visual Studio 2002 时,潘正磊领导着 Visual Basic 团队(VS 2002 是第七个版本),“这是一款影响力巨大的产品,时至今日,还有用 VB 6 开发的企业软件在运行。”


最让她开心的是热心用户写给比尔·盖茨和 Visual Basic 产品团队的一封信,“感谢我们改变他们的生活。他们能够用这个工具学习软件开发,并成为职业开发者。”


但是 .NET 是未来,这意味着 VB 也需要继续发展。


“Visual Basic .NET 是个有趣的过渡。”潘正磊回忆说,“因为大部分代码被重写,所以它既是 7.0 版也是 1.0 版。”


事实上为了 .NET,微软几乎重写了整个 Visual Studio。


“人们常常把 VB 6 看成三种不同的事物:开发语言,运行时和开发工具。”潘正磊解释说,“但它们都是相互关联的,运行时和框架决定了编程语言的能力,我们在 .NET Framework 上能用 VB.NET 和 C# 编程。这是一个关键的战略决策,也是一个重大转变。”


之后的 Visual Studio 版本不断强化重要功能。 Visual Studio 2003 是一个轻量级更新,主要是支持 .NET Framework 1.1 的发布,Visual Studio 2005 的用户开始转变为开发团队,潘正磊是项目负责人。之后,Visual Studio 2010 引入了对 F#语言和 LINQ 的支持,后者允许用 .NET 编程语言查询数据库,并加入了代码编辑器——今天开发者仍能在新版 Visual Studio 使用到其更新版。


Windows 8 改变了一切


接下来就是 Windows 8 和 Visual Studio 2012 了。


“这是我们第一次不能自主设定产品发布周期。”潘正磊回忆说,“发布日期是按照 Windows 8 的时间表定的。公司认识到移动设备和消费者触摸式设备的重要性,并为此打造了 Windows 8,对我们团队来说,这也是 Visual Studio 一个重大发布。”

 

Windows 8 的发布对业界所有人来说都是颠覆性的,但潘正磊很享受这一挑战。(Windows 8 和 Visual Studio 2012 发布后,她升任公司副总裁。)


“让 Visual Studio 和 Windows 8 同时发布是件非常复杂的事。我们必须支持 Windows 应用程序运行时、运行 Windows 应用商店等等,并按时发布新的 SDK。同时完成这一切是个非常有意思的经历。”


更快,更开放


这次与 Windows 8 共同发布的经历也影响 Visual Studio 新版本开发的决策。


首先是应对更快产品发布周期的需求。 “在此之前,我们大多每三年发布一个版本。”潘正磊说,“但 2012 年,我们希望加快节奏,几乎达到每个季度就有一次更新的频率。”


这些更新不仅仅是修复 bug,还必须加入重要的新功能。


“我们在团队内部真正开始了 DevOps(开发运维)的思维方式。” 潘正磊总结说。


第二个重大变化是 Visual Studio 最先成为切实拥抱开源的微软产品之一,这一变化现在微软随处可见。


“我们决定开源下一代编译器,当时的代号是 Roslyn。”她说,“2014 年的 Build 大会上我们宣布了这一消息,同年晚些时候,我们宣布了一个更大的开源项目—— .NET。这是两个至关重要的转折点。”


开源模式让 Visual Studio 团队真正了解他们的客户正在做什么,并让客户深度参与产品的开发,无论是 Xamarin 的移动开发更新,Azure 里基于云的解决方案,还是跨平台的 .NET Core 技术。


移动新战略


过去一年中,潘正磊经历了几次公司和产品层面的战略调整。而今的同事们都有着不同的背景和经验,并且公司对开源的积极态度也吸引着新一代的员工。


2005 年,还是大学生的 Mikayla Hutchinson 参加了谷歌编程之夏(Google Summer of Code),幸运地得到了 Miguel de Icaza(著名的自由软件主义者)对她所参与的开源项目的指导,并因此爱上了 C# 和 Miguel 领导的 Mono 项目。2007 年,参加完两届谷歌编程之夏后,她跟着 Miguel 加入了位于波士顿的 Ximian,后者隶属于 Novell。Mikayla 的工作是为 Linux 上的商业应用打造开发工具。


微软开发工程师 Mikayla Hutchinson


之后,她所属的团队遭 Novell(或说是其母公司 Attachmate裁撤,于是 Miguel 和 Nat Friedman 创立了 Xamarin 继续 Mono 项目,并专注于移动端开发体验。他们雇回了 Ximian 的所有人员,包括 Mikayla。


Mono 是一个将 .NET 带到 Linux、UNIX 和类似 UNIX 系统的开源项目。尽管当时微软对这个项目没有正式表态,许多微软员工悄悄地为 Miguel 和新公司加油呐喊,并以各自力所能及的方式提供帮助。之后,Mono 毫无悬念地被带到了安卓和 iOS 两个主流移动平台。


刚开始,Mikayla 在 Xamarin 担任类似架构师的角色,奔忙于安卓和 iOS 的项目中。 “我帮助创建了一个激活系统,还参与过一个虚拟引擎项目,但最终没完成。”她回忆说。


大约两年前,她转做项目经理,参与过 Visual Studio 扩展、SDKs 和移动等多个项目。之后,Hutchinson 一直参与 Xamarin Studio for Mac 的开发,2016 年 Xamarin 被微软收购后,这个产品更名为 Visual Studio for Mac。


“去年,我们发布了 Xamarin Studio 的衍生版 Visual Studio for Mac,其中最大的改变是支持 ASP.NET Core Web 服务,现在开发者可以同时打造应用及其后端了。”她骄傲地说。


在微软拥抱开源前,将 .NET 技术移植到 Mono 工作量巨大。需要大量的工作。但随着 Roslyn 的出现和 .NET 更广泛的开源,Xamarin 已经取得了长足的进展。


“我们在被收购前就与一直与微软合作。” Mikayla 说,“从一开始,他们就一直支持我们的工作。”


Mikayla 和其他 Xamarin 成员仍然主要在他们波士顿的办公室工作(大约一半的团队成员是远程工作)。去年在产品中加入 ASP.NET Core Web 服务“本不在我们产品路线图上。”她说,“但现在我们拥有了一个更远大的愿景,成为一个更宏大故事的组成部分。”


这次收购也让 Xamarin 成员与之前一直交流的微软同事沟通起来更容易了。


“是啊,我现在可能会花更多的时间在电子邮件和会议上。”她承认,“但能和聪明的工程师和了不起的人共事本身就很有意义。我们正在做着以前无法办到的事情。”


Mikayla 回忆自己还在 Novell 的时候,微软因为还未公开支持开源,但这一切已是被遗忘的过去时了。


“开源已在微软内部扎下了根。” Mikayla 说,“大家的态度已经发生了很大的转变。比如,在 GitHub 上,人们可以看到很多 C# 开发的进展;我们在社区上公布语言设计会议纪要,开发者可以提交他们问题和想法,并与团队成员讨论。这是一个巨大的变化。”


对于 Xamarin 来说,加入微软同样带来了巨变:一旦在 Visual Studio 中加入新技术,用户基础就呈爆炸式增长,在 Windows 中增加 Xamarin Studio 功能就是一个很好的例子。


“去年一年真是不可思议。” Mikayla 说,“我们的用户数字爆棚。工作中最让我欣喜的一直是为开发者打造工具,并看到他们利用这些工具打造出色的产品。能接触、影响到这么多人真是太棒了。”


开放、透明

微软项目经理 Phillip Carter


与 Mikayla 的经历不同,年轻的项目经理 Phillip Carter 只了解一个完全开放、透明的微软。他的工作是撰写 F# 技术文档,并将其集成进 Visual Studio。


F#是 Phillip 在大学时最喜欢的编程语言,而他在大学里的开发经验都基于开源解决方案。2015 年 Phillip 加入了微软的 .NET 团队,当时的项目已经开源,所以微软之前对开源的态度他一无所知。


“对我来说,一切都是水到渠成。”他说。


当被问及是否有遇到老员工对采用开源方式解决问题不感冒的经历时,他回答说还没碰到过。

 

“我的每位同事都喜欢这种工作方式。”他补充道, “我们能直接与客户沟通,他们也能从我们的成功中受益。微软开发者和外部世界之间的障碍已经消除,产品因此也得到更大提升。”


真是这样吗?


“对此我毫不怀疑。”他继续说,“每个人都喜欢这种转变;开发工程师、项目经理、总监,每个人都热衷于此。其实,这也提高了客户对 .NET 接受度,让产品更有用、更真诚。说感觉软件真诚可能很奇怪,但我们很多资料都在 Github 公开,而不是隐藏在公司内部。微软以外的人都被这样的做法惊倒了。”

 

有意思的是,开源真正的优势并不是能接触到如此多的源代码(尽管的确如此),而是其透明度和由此引发的交流。用户从外部为产品做贡献,实际上也变成了团队一员,他们会像微软员工一样尽可能为提高产品质量而努力。


“F#就是这种直接交流产物的范例。” Phillip 说, “社区提交了正式需求,另外他们还牵头发起了主要的的新语言和 IDE 功能。”


这样开放的产品开发方式也让微软员工拥有更大的目标感,他们不再是向某位上级负责,现在整个社区都在保证以正确的方式完成产品。


项目经理 Kasey Uhlenhuth 2014 年大学毕业后直接加入公司,目前负责提升 C# 开发者体验的开发工具。和 Phillip 一样,她所熟悉的微软也是开放的。当时微软进行另一场重要转变。


微软项目经理 Kasey Uhlenhuth


“我在最好的时候加入了公司。”她这样评价那段日子,“微软正迎来一位新的 CEO,到处都充满着机遇和变化。”


她加入的第一个团队是当时已经开源的编译器 Roslyn, “我加入的时候,所有的 .NET 都已经开源了,能跨平台了。这真是太棒了。”


微软拥抱开源是一回事,学术界当时对微软的态度如何呢?

 

“我的专业是计算机科学,有一门课是用户体验,这门课特别吸引我。”她回忆说,“当时的教授来自微软研究院,他正在为真实的客户解决实际问题。上那门课的很多同学后来都加入了微软。”


Kasey 在 Roslyn 团队的经历很具有代表性,在很多方面都展现出整个公司正经历的转变。Roslyn 是微软开源 .NET 编译器平台,也是现代开发者堆栈的基石,它的模块化、开发和透明以及添加新功能更快捷都让它比之前的版本更出色。


“现在每个人都可以基于这项技术生成开源 API 或进行重构。”她说。


Kasey 刚加入 Microsoft 时,她只负责 Visual Studio 2015 里一个很快就会完成的功能。在刚发布的 Visual Studio 2017 里,她的工作已经扩展到提升 C# 开发人员体验,包括重构、代码分析、导航和 IntelliSense。(其他项目经理负责项目系统、语言、调试和 Live Unit Testing 等。)


“我们根据开发者工作效率划分体验的优先顺序,大部分时间都在寻找如何让开发者更有效率。我们一起寻找瓶颈问题,然后排列优先级。”她回忆道。


“现在,我们和社区之间有一个开放沟通渠道。”她补充到,并列举了多个由社区推动的 bug 修复和 IDE 改进案例。


微软正与满怀归属感、责任感的活跃社区密切合作,有效、开放地创造、改进其开发产品和技术。新功能有时直接来自微软,但更多的时候他们来自社区。


一切看上去都是如此合情合理。但对于那些在这个行业呆了几十年的人们来说,这一变化无疑是难以置信的。对那些在微软工作多年、从未有这种工作方式的人来说更是不可思议。


“这是一个崭新世界。”潘正磊这样评价这场巨变。Visual Studio 2017 在向世人展现这场巨变的同时,坚守着产品的初衷。


“Visual Studio 2017 的发布让我激动万分。”她说,“新一代的开发者正在打造移动优先、云有限的应用程序。Visual Studio 2017 既是过去二十年创新的积累,更是我们根植今天开发者社区的硕果。”


了解更多:



后台入驻微软小冰

如果你很萌,请跟她一决高下!


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存